import {request, showToast} from '../../request/index'
Page({
    data: {
        goodsDetailList: [],
        isCollect: false
    },
    // 商品对象
    goodsInfo: {},

    onLoad: function (options) {
       
    },
    onReady: function () {

    },
    onShow: function () {
        // 获取页面栈，从该栈的栈顶页面中获取options
        let pages =  getCurrentPages();
        let currentPage = pages[pages.length - 1];
        let options = currentPage.options;
        // 获取其他页面传递的参数
        const {goods_id} = options;
        this.getGoodsDetail(goods_id);
    },
    onHide: function () {

    },
    onUnload: function () {

    },
    onPullDownRefresh: function () {

    },
    onReachBottom: function () {

    },
    onShareAppMessage: function () {

    },

    // 获取商品详情的请求数据
    async getGoodsDetail(goods_id) {
        try {
            const {data:res} = await request({url:'/goods/detail', data:{goods_id}});
            this.goodsInfo = res.message;
            // 获取缓存中的收藏数组
            let collect = wx.getStorageSync('collect') || [];
            // 判断当前页面的商品是否已放入收藏数组中，如果已放入，标记isCollect已收藏,
            // 页面加载时，会根据isCollect布尔值显示当前商品的收藏状态
            let isCollect = collect.some(v => {return v.goods_id===this.goodsInfo.goods_id});
            // 获取页面实际需要的数据
            const goodsDetailList = res.message;
            this.setData({
                isCollect,
                // 只提取需要的这四个属性,再定义一个属性
                goodsDetailList: {
                    pics: goodsDetailList.pics,
                    goods_price: goodsDetailList.goods_price,
                    goods_name: goodsDetailList.goods_name,
                    // iphone部分手机不支持图片的webp格式，把富文本内容里的.webp手动修改为.jpg
                    goods_introduce: goodsDetailList.goods_introduce.replace(/\.webp/g, '.jpg'),
                }
            })
        }catch(e){
            console.log(e);
        }
    },

    // 点击轮播图放大预览的事件
    handlePreviewImg(e) {
        const urls = this.goodsInfo.pics.map(v => v.pics_mid);
        const current = e.currentTarget.dataset.url;
        wx.previewImage({
            current,
            urls
        });
    },

    // 商品收藏事件
    async handleCollectBtn() {
        let isCollect = false;
        // 获取缓存中已收藏的商品数组
        let collect = wx.getStorageSync('collect') || [];
        // 判断该页面商品是否已被收藏过
        let index = collect.findIndex(v => v.goods_id===this.goodsInfo.goods_id);
        if(index === -1){
            collect.push(this.goodsInfo);
            isCollect = true;
        }else{
            collect.splice(index, 1);
            isCollect = false;
        }
        // 将修改后的收藏数组重新放回缓存中
        wx.setStorageSync('collect', collect);
        // 重新设置收藏状态属性
        this.setData({
            isCollect
        });
        // 收藏提示框
        await showToast({
            title: isCollect ? '收藏成功!' : '收藏已取消', 
            icon: isCollect ? 'success' : 'error', 
            mask:true
        });
    },

    // 加入购物车事件
    async handleCartAdd() {
        // 获取缓存中的购物车数组
        let cart = wx.getStorageSync('cart') || [];
        let index = cart.findIndex(v => v.goods_id===this.goodsInfo.goods_id);
        // 判断商品对象是否存在于购物车数组中
        if(index === -1){
            // 不存在，第一次添加
            this.goodsInfo.num = 1;
            this.goodsInfo.checked = true
            cart.push(this.goodsInfo);
        }else{
            // 已经存在于购物车中，执行num++
            cart[index].num++;
        }
        // 把购物车数据重新添加回缓存中
        wx.setStorageSync('cart',cart);
        // 弹窗提示
        await showToast({title: '加入成功！', icon: 'success', mask: true});
    },
})